package com.hck.infrastructure.persistent.dao;

import com.hck.infrastructure.persistent.po.HealthReport;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * 健康報告表數據訪問接口
 */
@Mapper
public interface IHealthReportDao {
    /**
     * 插入健康報告
     */
    void insert(HealthReport healthReport);

    /**
     * 根據ID查詢健康報告
     */
    HealthReport selectById(Long id);

    /**
     * 根據用戶ID查詢健康報告
     */
    List<HealthReport> selectByUserId(Long userId);

    /**
     * 根據用戶ID和報告類型查詢健康報告
     */
    List<HealthReport> selectByUserIdAndType(@Param("userId") Long userId, @Param("reportType") String reportType);

    /**
     * 根據生成時間範圍查詢健康報告
     */
    List<HealthReport> selectByGenerateTimeRange(@Param("userId") Long userId, @Param("startTime") Date startTime, @Param("endTime") Date endTime);

    /**
     * 查詢有效的健康報告
     */
    List<HealthReport> selectValidReports(Long userId);

    /**
     * 更新健康報告
     */
    void update(HealthReport healthReport);

    /**
     * 刪除健康報告
     */
    void deleteById(Long id);
} 